package com.qf.talk.controller;

import com.alibaba.fastjson.JSONObject;
import com.qf.base.controller.BaseController;
import com.qf.base.result.R;
import com.qf.base.utils.SnowFlakeUtil;
import com.qf.talk.client.PushClient;
import com.qf.talk.dao.MessageDao;
import com.qf.talk.dto.MessageDTO;
import com.qf.talk.service.TalkService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

@RestController
@RequestMapping("/talk")
public class TalkController extends BaseController {
    @Resource
    private TalkService talkService;
    @Resource
    private PushClient pushClient;
    @Resource
    SnowFlakeUtil snowFlakeUtil;
    @PostMapping("/send")
    public R sendMessageToUser(@RequestBody MessageDTO messageDTO){
        //一个人要给另一个人发消息
        //需要什么消息
        //当前用户id
        //目标用户id
        //发送的内容：消息本身，消息的类型
        Long userId=userId();
        Long toUserId = messageDTO.getToUserId();
        String message=messageDTO.getMessage();
        Integer mesageType=messageDTO.getMessageType();
        int i = talkService.sendMessage(userId, toUserId, message, mesageType);
        if (i==-1){
            return R.error(501,"您与对方不是朋友关系");
        }else if (i==0){
            return R.error(500,"发送消息失败");
        }else {
            //加入张三给李四发送消息
            //是不是要推送给李四，消息内容
            //有能力推送
            //添加成功
            //调用推送服务
            long requestId= snowFlakeUtil.nextId();
            com.qf.base.push.MessageDTO msgDTO=new com.qf.base.push.MessageDTO();
            msgDTO.setRequestId(requestId);
            msgDTO.setType(1);
            JSONObject jsonObject=new JSONObject();
            jsonObject.put("user", user());
            //为了区分聊天消息里到底是有人请求添加还是认为添加，还是有人和用户说话
            jsonObject.put("flag", 2);
            jsonObject.put("content",message);
            msgDTO.setMessage(jsonObject.toJSONString());
            //发送消息
            pushClient.send(msgDTO);
            //通知wantUserId这个用户，userId这个用户添加你为好友
            return R.ok(200,"发送消息成功");
        }

    }

}
